package com.xuelang.pipeline.app.pipeline;

import com.xuelang.pipeline.client.common.request.PageParam;
import com.xuelang.pipeline.client.common.result.PageRecord;
import com.xuelang.pipeline.client.pipeline.dto.GroupDTO;
import com.xuelang.pipeline.client.pipeline.dto.GroupQuery;
import com.xuelang.pipeline.client.pipeline.dto.PipelineGroupQuery;

import java.util.List;

/**
 * 流水线分组服务接口
 *
 * @author xiwen.zxg
 * @since 2024/5/15
 */
public interface GroupService {
    /**
     * 查询流水线分组列表(有过滤条件)
     *
     * @param dtoPageParam
     * @return
     */
    PageRecord<GroupDTO> pageList(PageParam<GroupQuery> dtoPageParam);

    /**
     * 查询流水线分组列表(有过滤条件)
     *
     * @param groupQuery
     * @return
     */
    List<GroupDTO> list(GroupQuery groupQuery);
    /**
     * 添加流水线分组
     *
     * @param groupDTO
     * @return
     */
    Boolean add(GroupDTO groupDTO);

    /**
     * 批量新增/更新/删除流水线分组
     * @param groupDTOList
     * @return
     */
    Boolean batchSaveOrUpdate(List<GroupDTO> groupDTOList);

    /**
     * 更新流水线分组
     *
     * @param groupDTO
     * @return
     */
    Boolean update(GroupDTO groupDTO);

    /**
     * 删除流水线分组
     *
     * @param uuid
     * @return
     */
    Boolean delete(String uuid);
    /**
     * 查询流水线分组
     *
     * @param uuid
     * @return
     */
    GroupDTO query(String uuid);

    /**
     * 流水线分组变更
     * @param query
     * @return
     */
    Boolean modifyPipelineGroups(PipelineGroupQuery query);

    /**
     * 收藏流水线
     * @param pipelineCode
     * @return
     */
    Boolean addFavoritePipeline(String pipelineCode);

    /**
     * 取消收藏流水线
     * @param pipelineCode
     * @return
     */
    Boolean removeFavoritePipeline(String pipelineCode);
}
